perm filename FSTUDP.FAI[OLD,LCS] blob sn#026819 filedate 1974-01-08 generic text, type T, neo UTF8
00100		TITLE FSTUDP ; ********* NOV 4,70 *********
00200		INTERNAL INTUDP,TOUDP,FINUDP,TOTAPE,FINTAP,BACKSP
00300		INTERNAL GETTAP,INTAPE,FSTMUS,PUTMUS,FINMUS
00400	
00500	; USE UDFAST.DMP[1,3] TO PLAY FROM UDP
00600	
00700		FILUDP←←1		;SET TO 0 FOR NON-FILE STRUCTURED UDP
00800					;SET TO 1 FOR FILE STRUCTURED UDP
00900		MAXBLK←←=4998		;=4999 IS USED BY SYSTEM FOR PASSWORD
00950		MAXBLK←←=400*=19-2	;LAST BLOCK IS USED BY SYSTEM FOR PASSWORD
01000	
01100		CH←12
01200		CH2←11
01300		BLKS←←=1
01400	
01500	DEFINE ERROR (MSG)
01600	<	JSA 16,.ERROR
01700		JUMP [ASCIZ/MSG/
01800	]
01900	>
02000	
02100	REGS:	BLOCK 20
02200	
02300		INTERNAL MTA1,INMTA1
02400	;CALL MTA1
02500	MTA1:	0	;CH2, READS MTA1.
02600		INIT CH2,617
02700		SIXBIT/MTA1/
02800		0
02900		ERROR <CAN'T INIT MTA1>
03000		JRA 16,0(16)
03100	;CALL INMTA1(<ARRAY>,<NO. OF WORDS>)
03200	INMTA1:	0
03300		HRRZ 0,0(16)
03400		SUBI 0,1
03500		MOVEM 0,COM
03600		MOVN 0,@1(16)
03700		HRLM 0,COM
03800		INPUT CH2,COM
03900		STATZ CH2,740000
04000		ERROR <MAG TAPE READ ERROR>
04100		JRA 16,2(16)
04200	
04300	;CALL PUTMUS(<FILE>)
04400	
04500	PUTMUS:	0	;USES INTMUS,FSTMUS,FINMUS, CH2. WRITES ON 2314. 
04600		MOVE 0,@0(16)
04700		MOVEM 0,FILNAM
04800		JSA 16,INTFIL
04900		MOVE 0,[SIXBIT/MUS/]
05000		MOVEM 0,DIR+1
05100		SETZM DIR+2
05200		SETZM DIR+3
05300		ENTER CH2,DIR
05400		ERROR <ENTER FAILED>
05500		JRA 16,1(16)
05600	DIR:	BLOCK 4
05700	
05800	;CALL FSTMUS(<ARRAY>,<NO. OF WORDS>)
05900	
06000	FSTMUS:	0
06100		HRRZ 0,0(16)
06200		SUBI 0,1
06300		MOVEM 0,COM
06400		MOVN 0,@1(16)
06500		HRLM 0,COM
06600		OUTPUT CH2,COM
06700		STATZ CH2,740000
06800		ERROR <WRITE ERROR>
06900		JRA 16,2(16)
07000	
07100	;CALL INTUDP
07200	
07300	INTUDP:	0	;USES TOUDP, FINUDP, CH2. WRITES ON UDP.
07400		INIT CH2,17
07500		SIXBIT/UDP/
07600		0
07700		ERROR <CAN'T INIT UDP>
07800	IFE FILUDP,<
07900		MOVEM BLKNUM
08000		MOVEI 1
08100		EXCH BLKNUM
08200	>
08300	IFN FILUDP,<
08400		IN CH2,[IOWD 40,UDPBUF
08500			0]
08600		CAIA
08700		ERROR <CAN'T READ UDP BITMAP>
08800		SKIPN 1,UDPBUF+20	;IS THERE A POINTER TO SCRATCH AREA
08900		MOVEI 1,1		;NO, START AT BLOCK 1
09000		MOVEM 1,BLKNUM		;SET BLOCK NUMBER
09100	>
09200		ENTER	CH2,[0
09300			0
09400			0
09500			0]
09600		ERROR <WRONG PASSWORD, PLEASE MOUNT CORRECT UDP>
09700		JRA 16,0(16)
09800	
09900	INTFIL:	0	;INITS DSK 
10000		MOVEI REGS
10100		BLT REGS+3
10200		INIT CH2,17
10300		SIXBIT/DSK/
10400		0
10500		ERROR <CAN'T INIT DSK!>
10600		MOVE 0,FILNAM#
10700		MOVEM 0,FN#
10800		MOVE 1,[POINT 7,FN]
10900	INTF3:	MOVE 2,[POINT 6,DIR]
11000		SETZM DIR
11100		MOVEI 3,5
11200	INTF1:	ILDB 0,1
11300		CAIN 0," "
11400		JRST INTF2
11500		SUBI 0,40
11600		IDPB 0,2
11700		SOJG 3,INTF1
11800	INTF2:	HRLZI REGS
11900		BLT 3
12000		JRA 16,0(16)
12100	
12200	;CALL TOTAPE(<ARRAY>,<NO.OF WORDS>)  WRITES ON MAGTAPE
12300	
12400	TOTAPE:	0
12500		HRRZ 0,0(16)
12600		SUBI 0,1
12700		MOVEM 0,COM
12800		MOVN 0,@1(16)
12900		HRLM 0,COM
13000		OUTPUT CH,COM
13100		STATZ CH,740000
13200		ERROR <MAG TAPE WRITE ERROR>
13300		JRA 16,2(16)
13400	
13500	;CALL GETTAP
13600	
13700	GETTAP:	0	;USES INTAP OR TOTAPE, CH.  READS OR WRITES MTA0.
13800		INIT CH,617
13900		SIXBIT/MTA0/
14000		0
14100		ERROR <CAN'T INIT MTA0>
14200		JRA 16,0(16)
14300	
14400	;CALL INTAPE(<ARRAY>,<NO.OF WORDS>)  READS MAGTAPE
14500	
14600	INTAPE:	0
14700		HRRZ 0,0(16)
14800		SUBI 0,1
14900		MOVEM 0,COM
15000		MOVN 0,@1(16)
15100		HRLM 0,COM
15200		INPUT CH,COM
15300		STATZ CH,740000
15400		ERROR <MAG TAPE READ ERROR>
15500		JRA 16,2(16)
15600	
15700	;CALL TOUDP(<ARRAY>,<NO. OF WORDS>)
15800	
15900	TOUDP: 0
16000		HRRZ 0,0(16)
16100		SUBI 0,1
16200		MOVEM 0,COM1
16300		MOVN 0,@1(16)
16400		HRLM 0,COM1
16500		MOVE 0,BLKNUM
16600		CAILE 0,MAXBLK-BLKS+1
16700		ERROR <UDP FULL!>
16800		OUTPUT CH2,COM1
16900		MOVEI 0,BLKS
17000		ADDM 0,BLKNUM
17100		STATZ CH2,740000
17200		ERROR <UDP WRITE ERROR>
17300		JRA 16,2(16)
17400	
17500	COM:	OCT 0,0
17600	COM1:	0
17700	BLKNUM:	0
17800	
17900	;CALL FINUDP(WORD COUNT)
18000	
18100	FINUDP:	0
18200		MOVE 0,@ 0(16)
18300	IFE FILUDP,<
18400		MOVEM 0,[FOO:	0
18500				0	]
18600		OUTPUT CH2,[IOWD 40,FOO
18700			0 ]
18800		CAIA
18900	>
19000	IFN FILUDP,<
19100		IN CH2,[IOWD 40,UDPBUF
19200			0]
19300		CAIA
19400		ERROR <ERROR IN READING UDP BITMAP!>
19500		MOVEM 0,UDPBUF+21
19600		OUT CH2,[IOWD 40,UDPBUF
19700			0]
19800		JRST FINMUS+1
19900		ERROR <ERROR IN WRITING UDP BITMAP!>
20000	>
20100	;CALL FINMUS
20200	FINMUS:	0
20300		CLOSE CH2,0
20400		STATZ CH2,740000
20500		ERROR <ERROR AFTER CLOSE>
20600		RELEASE CH2,0
20700		JRA 16,0(16)
20800	
20900	FINTAP:	0
21000		CLOSE CH,0
21100		STATZ CH,740000
21200		ERROR <MAG TAPE ERROR AFTER CLOSE>
21300		RELEASE CH,0
21400		JRA 16,0(16)
21500	
21600	BACKSP:	0
21700		INIT CH,617
21800		SIXBIT/MTA0/
21900		0
22000		ERROR <CAN'T INIT MTA0>
22100		MTAPE CH,7
22200		JRA 16,0(16)
22300	
22400	.ERROR:	0
22500		OUTSTR [ASCIZ/?
22600	/]				;MAKE SURE HE CAN SEE HIS ERROR
22700		OUTSTR @(16)		;OUTPUT ERROR MESSAGE
22800		CALLI 1,12		;LET USER CONTINUE
22900		JRA 16,1(16)
23000	UDPBUF:	BLOCK 40
23100	END